/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package envmailsicep;

import com.entersoft.sicep.log4j.Log4jUtil;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;

/**
 *
 * @author acampos
 */
public class GeneraArchivoLegFin {
    private static org.apache.log4j.Category logger = Log4jUtil.instance().getCategory(GeneraArchivoLegFin.class);
    private  File       filS;
    private  String     archSalida;
    private  BufferedWriter bw;
    
    public GeneraArchivoLegFin(){
        Calendar c = Calendar.getInstance();
        String anio = ""+c.get(Calendar.YEAR);
        String mes  = ""+ ((c.get(Calendar.MONTH)+1) < 10 ? "0" + (c.get(Calendar.MONTH)+1) : (c.get(Calendar.MONTH)+1));
        String dia  = "" + (c.get(Calendar.DATE) <10 ? "0" + c.get(Calendar.DATE) : c.get(Calendar.DATE));
        archSalida = "EVAL_LEGALFINAN_" 
                     + anio
                     + mes
                     + dia
                     +".txt";
        
    
    }   
    
    public boolean generarArchivo(){
        boolean vof=false;
        //logger.info("Carga parametro en Clase :  InsArchAntCom" +  "modulo : CargaLista()" );
        org.hibernate.Session session = HibernateUtil.getSessionFactory().openSession();
        try{
            filS = new File("D:\\QA\\descarga\\" + archSalida);
            //filS = new File("C:\\descarga\\" + archSalida);
            bw =
            new BufferedWriter(new FileWriter(filS));
            
            Query query; 
            query = session.getNamedQuery("OBL_SCP_sel_GestionInterna_sicep");
            //logger.debug(" Sentencia Query["+query.getQueryString()+"]");
            List<ListaArchLegFin> lst = query.list();
            if (!lst.isEmpty()){
                for (int j = 0; j < lst.size(); j++){
                    bw.write(
                             agregarblancoDerecha(lst.get(j).getRut(),10)//RUT         10
                             +
                             agregarblancoDerecha(lst.get(j).getDigVer(),1)//DV          01
                             +
                             agregarblancoDerecha(lst.get(j).getRazSoc(),50)//RAZON       50
                             +
                             agregarblancoDerecha(lst.get(j).getNombre(),50)//NOMBRE      50
                             +
                             agregarblancoDerecha(lst.get(j).getEjecutivo(),50)//EJECUTIVO   50
                             +
                             agregarblancoDerecha(lst.get(j).getTipo(),35)//TIPO        35
                             +
                             agregarblancoDerecha(lst.get(j).getEvaluador(),50)//EVALUADOR   50
                             +
                             agregarblancoDerecha(lst.get(j).getAsignacion(),10)//ASIGNACION  10
                             +
                             agregarblancoDerecha(lst.get(j).getPlazo(),10)//PLAZO       10
                             +
                             agregarblancoDerecha(lst.get(j).getInforme(),10)//INFORME     10
                             +
                             agregarblancoDerecha(lst.get(j).getAtraso(),5)//ATRASO      05 
                            );
                    bw.newLine();
                }
            }            
            bw.close();
            vof = true;
        } catch (IOException ioe){
            logger.error("[InsArchCtr" + ".init] finally  - Error Exception. "+ ioe);
            vof=false;
        }catch( HibernateException sqle) {
            logger.error("HibernateException: " + sqle.getMessage());
            logger.error("SQLException: " + sqle.getCause().getMessage());
             vof=false;
        }catch (Exception j){
            logger.error("[InsArchCtr" + ".init] finally  - Error Exception. "+ j);
             vof=false;
        }finally{
            if(session != null){
                if(session.isConnected()){
                    session.close();
                }
            }
        }
        return vof;
    }
    
    
    private String  agregarblancoDerecha(String palabra, int largo){
        while (palabra.length() < largo){
            palabra += " ";
        }
        return palabra;
    }
}
